--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Commit aaa253909e8a65bdae4e42180eae5f1e753e34c0
Parents : 9a10a03
Author : Ivan <ivan@quad4.io>
Signature : Signature validation error
Date : 2026-05-08T23:45:54-05:00
docs(README, docs): add reset password functionality details and update CLI options across multiple languages
Changes
8 files changed, 34 insertions(+), 11 deletions(-)
Diff
diff --git a/README.md b/README.md
index 92a326f6..99e5a138 100644
--- a/README.md
+++ b/README.md
@@ -323,6 +323,7 @@ MeshChatX supports both CLI args and env vars.
| `--rns-log-level` | `MESHCHAT_RNS_LOG_LEVEL` | (none) | Reticulum (RNS) stack log level: `none`, `critical`, `error`, `warning`, `notice`, `verbose`, `debug`, `extreme`, or a numeric level. CLI overrides env when both are set. |
| `--headless` | `MESHCHAT_HEADLESS` | `false` | Do not auto-launch browser |
| `--auth` | `MESHCHAT_AUTH` | `false` | Enable basic auth |
+| `--reset-password` | `MESHCHAT_RESET_PASSWORD` | `false` | Clear the stored password hash so a new password can be set via the web UI |
| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | Data directory |
| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | auto/bundled | Frontend files directory (needed for source installs without bundled assets) |
diff --git a/docs/meshchatx.md b/docs/meshchatx.md
index 161ef7bb..95f8dfb9 100644
--- a/docs/meshchatx.md
+++ b/docs/meshchatx.md
@@ -104,6 +104,7 @@ The project favors predictable SQL behavior and explicit migration control, whic
- Cookie sessions via encrypted storage
- Auth and access-attempt tracking integrated with IP/User-Agent aware controls
- Debug endpoints provide visibility into logs and access-attempt records
+- Password reset via `--reset-password` (or `MESHCHAT_RESET_PASSWORD=true`) clears the stored bcrypt hash so a new password can be set through the web UI
This is also very well tested, but I still would not recommend exposing MeshChatX to the internet.
diff --git a/docs/meshchatx_on_raspberry_pi.md b/docs/meshchatx_on_raspberry_pi.md
index b9083edc..3ac5e4db 100644
--- a/docs/meshchatx_on_raspberry_pi.md
+++ b/docs/meshchatx_on_raspberry_pi.md
@@ -225,6 +225,22 @@ journalctl -u meshchatx.service -n 200 --no-pager
systemctl show meshchatx.service -p ExecStart -p User -p Group
```
+## Reset Password
+
+If you forget the web UI password and have SSH access to the Pi, reset it with the `--reset-password` flag:
+
+```bash
+meshchatx --reset-password --headless --host 0.0.0.0 --port 8000
+```
+
+Or set the environment variable:
+
+```bash
+MESHCHAT_RESET_PASSWORD=true meshchatx --headless --host 0.0.0.0 --port 8000
+```
+
+This clears the stored password hash on startup. Open the web UI and you will see the Initial Setup screen where you can set a new password. After resetting, you can stop the app and restart without the flag.
+
## Notes
- Reticulum configuration and identity data are stored in the service user's home
diff --git a/lang/README.de.md b/lang/README.de.md
index bf70b21a..2667dd1c 100644
--- a/lang/README.de.md
+++ b/lang/README.de.md
@@ -306,6 +306,7 @@ Weitere Dokumentation:
| `--rns-log-level` | `MESHCHAT_RNS_LOG_LEVEL` | (keine) | Reticulum (RNS) Log-Level: `none`, `critical`, `error`, `warning`, `notice`, `verbose`, `debug`, `extreme` oder numerisch. CLI ueberschreibt die Umgebungsvariable, wenn beide gesetzt sind. |
| `--headless` | `MESHCHAT_HEADLESS` | `false` | Browser nicht automatisch oeffnen |
| `--auth` | `MESHCHAT_AUTH` | `false` | Basis-Authentifizierung aktivieren |
+| `--reset-password` | `MESHCHAT_RESET_PASSWORD` | `false` | Gespeicherten Passwort-Hash loeschen, damit ein neues Passwort ueber die Web-Oberflaeche gesetzt werden kann |
| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | Datenverzeichnis |
| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | auto/bundled | Frontend-Verzeichnis (fuer Quell-Installationen ohne gebundelte Assets) |
diff --git a/lang/README.it.md b/lang/README.it.md
index 78722e95..5c38cf7f 100644
--- a/lang/README.it.md
+++ b/lang/README.it.md
@@ -306,6 +306,7 @@ Documentazione aggiuntiva:
| `--rns-log-level` | `MESHCHAT_RNS_LOG_LEVEL` | (nessuno) | Livello di log Reticulum (RNS): `none`, `critical`, `error`, `warning`, `notice`, `verbose`, `debug`, `extreme` o numerico. La CLI ha priorita sulla variabile d'ambiente se entrambe sono impostate. |
| `--headless` | `MESHCHAT_HEADLESS` | `false` | Non aprire il browser automaticamente |
| `--auth` | `MESHCHAT_AUTH` | `false` | Attiva autenticazione base |
+| `--reset-password` | `MESHCHAT_RESET_PASSWORD` | `false` | Cancella l'hash della password memorizzata per impostarne una nuova tramite l'interfaccia web |
| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | Directory dei dati |
| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | auto/bundled | Directory dei file frontend (necessaria per installazioni da sorgente senza asset in bundle) |
diff --git a/lang/README.ja.md b/lang/README.ja.md
index 154778bd..edb58012 100644
--- a/lang/README.ja.md
+++ b/lang/README.ja.md
@@ -297,17 +297,18 @@ cd android
## 設定
-| 引数 | 環境変数 | デフォルト | 説明 |
-| -------------------------- | ---------------------------------------- | ----------- | -------------------------------------------------------------------------------------- |
-| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Web サーバーのバインドアドレス |
-| `--port` | `MESHCHAT_PORT` | `8000` | Web サーバーポート |
-| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | HTTPS を無効化 |
-| `--ssl-cert` / `--ssl-key` | `MESHCHAT_SSL_CERT` / `MESHCHAT_SSL_KEY` | (なし) | PEM 証明書と鍵のパス。両方指定。アイデンティティの `ssl/` 下の自動生成証明書を上書き。 |
-| `--rns-log-level` | `MESHCHAT_RNS_LOG_LEVEL` | (なし) | Reticulum(RNS)のログレベル(上記の名前または数値)。CLI は環境変数より優先。 |
-| `--headless` | `MESHCHAT_HEADLESS` | `false` | ブラウザを自動で開かない |
-| `--auth` | `MESHCHAT_AUTH` | `false` | 基本認証を有効化 |
-| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | データディレクトリ |
-| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | 自動/同梱 | フロントエンドのディレクトリ(同梱資産なしのソースインストールで必要) |
+| 引数 | 環境変数 | デフォルト | 説明 |
+| -------------------------- | ---------------------------------------- | ----------- | --------------------------------------------------------------------------------------- |
+| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Web サーバーのバインドアドレス |
+| `--port` | `MESHCHAT_PORT` | `8000` | Web サーバーポート |
+| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | HTTPS を無効化 |
+| `--ssl-cert` / `--ssl-key` | `MESHCHAT_SSL_CERT` / `MESHCHAT_SSL_KEY` | (なし) | PEM 証明書と鍵のパス。両方指定。アイデンティティの `ssl/` 下の自動生成証明書を上書き。 |
+| `--rns-log-level` | `MESHCHAT_RNS_LOG_LEVEL` | (なし) | Reticulum(RNS)のログレベル(上記の名前または数値)。CLI は環境変数より優先。 |
+| `--headless` | `MESHCHAT_HEADLESS` | `false` | ブラウザを自動で開かない |
+| `--auth` | `MESHCHAT_AUTH` | `false` | 基本認証を有効化 |
+| `--reset-password` | `MESHCHAT_RESET_PASSWORD` | `false` | 保存されたパスワードハッシュを消去し、Web UI から新しいパスワードを設定できるようにする |
+| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | データディレクトリ |
+| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | 自動/同梱 | フロントエンドのディレクトリ(同梱資産なしのソースインストールで必要) |
## ブランチ
diff --git a/lang/README.ru.md b/lang/README.ru.md
index b662757a..57f16ec4 100644
--- a/lang/README.ru.md
+++ b/lang/README.ru.md
@@ -306,6 +306,7 @@ cd android
| `--rns-log-level` | `MESHCHAT_RNS_LOG_LEVEL` | (нет) | Уровень лога стека Reticulum (RNS): `none`, `critical`, `error`, `warning`, `notice`, `verbose`, `debug`, `extreme` или число. CLI перекрывает переменную окружения, если заданы оба. |
| `--headless` | `MESHCHAT_HEADLESS` | `false` | Не открывать браузер автоматически |
| `--auth` | `MESHCHAT_AUTH` | `false` | Базовая аутентификация |
+| `--reset-password` | `MESHCHAT_RESET_PASSWORD` | `false` | Сбросить сохраненный хэш пароля, чтобы задать новый через веб-интерфейс |
| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | Каталог данных |
| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | авто/bundled | Каталог фронтенда (для установок без встроенных ресурсов) |
diff --git a/lang/README.zh.md b/lang/README.zh.md
index 0468385d..8097af59 100644
--- a/lang/README.zh.md
+++ b/lang/README.zh.md
@@ -306,6 +306,7 @@ cd android
| `--rns-log-level` | `MESHCHAT_RNS_LOG_LEVEL` | (无) | Reticulum(RNS)日志级别:`none`、`critical`、`error` 等或数值。同时设置时 CLI 优先于环境变量。 |
| `--headless` | `MESHCHAT_HEADLESS` | `false` | 不自动打开浏览器 |
| `--auth` | `MESHCHAT_AUTH` | `false` | 启用基本认证 |
+| `--reset-password` | `MESHCHAT_RESET_PASSWORD` | `false` | 清除已保存的密码哈希,以便通过 Web UI 设置新密码 |
| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | 数据目录 |
| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | 自动/捆绑 | 前端文件目录(源码安装且未捆绑资源时需要) |
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────